ac39ad3
@@ -54,8 +54,7 @@
public class CometdComponent extends DefaultComponent {
     private static final transient Logger LOG = LoggerFactory.getLogger(CometdComponent.class);
 
     private final Map<String, ConnectorRef> connectors = new LinkedHashMap<String, ConnectorRef>();
-
-    private Server server;
+   
     private String sslKeyPassword;
     private String sslPassword;
     private String sslKeystore;
@@ -66,11 +65,13 @@
public class CometdComponent extends DefaultComponent {
     class ConnectorRef {
         Connector connector;
         CometdServlet servlet;
+        Server server;
         int refCount;
 
-        public ConnectorRef(Connector connector, CometdServlet servlet) {
+        public ConnectorRef(Connector connector, CometdServlet servlet, Server server) {
             this.connector = connector;
             this.servlet = servlet;
+            this.server = server;
             increment();
         }
 
@@ -115,11 +116,12 @@
public class CometdComponent extends DefaultComponent {
                     LOG.warn("You use localhost interface! It means that no external connections will be available."
                             + " Don't you want to use 0.0.0.0 instead (all network interfaces)?");
                 }
-                getServer().addConnector(connector);
+                Server server = createServer();
+                server.addConnector(connector);
 
-                CometdServlet servlet = createServletForConnector(connector, endpoint);
-                connectorRef = new ConnectorRef(connector, servlet);
-                getServer().start();
+                CometdServlet servlet = createServletForConnector(server, connector, endpoint);
+                connectorRef = new ConnectorRef(connector, servlet, server);
+                server.start();
 
                 connectors.put(connectorKey, connectorRef);
             } else {
@@ -153,15 +155,16 @@
public class CometdComponent extends DefaultComponent {
             ConnectorRef connectorRef = connectors.get(connectorKey);
             if (connectorRef != null) {
                 if (connectorRef.decrement() == 0) {
-                    getServer().removeConnector(connectorRef.connector);
+                    connectorRef.server.removeConnector(connectorRef.connector);
                     connectorRef.connector.stop();
+                    connectorRef.server.stop();
                     connectors.remove(connectorKey);
                 }
             }
         }
     }
 
-    protected CometdServlet createServletForConnector(Connector connector, CometdEndpoint endpoint) throws Exception {
+    protected CometdServlet createServletForConnector(Server server, Connector connector, CometdEndpoint endpoint) throws Exception {
         CometdServlet servlet = new CometdServlet();
 
         ServletContextHandler context = new ServletContextHandler(server, "/", ServletContextHandler.NO_SECURITY | ServletContextHandler.NO_SESSIONS);
@@ -228,17 +231,6 @@
public class CometdComponent extends DefaultComponent {
         return sslSocketConnector;
     }
 
-    public Server getServer() throws Exception {
-        if (server == null) {
-            server = createServer();
-        }
-        return server;
-    }
-
-    public void setServer(Server server) {
-        this.server = server;
-    }
-
     public String getSslKeyPassword() {
         return sslKeyPassword;
     }
@@ -307,10 +299,7 @@
public class CometdComponent extends DefaultComponent {
             connectorRef.connector.stop();
         }
         connectors.clear();
-
-        if (server != null) {
-            server.stop();
-        }
+       
         super.doStop();
     }
 
